home *** CD-ROM | disk | FTP | other *** search
- /* Permutation
- ** written by Ralf Gruner, Großschönau, Germany
- ** ralf.gruner@t-online.de
- */
-
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define maxchar 100
-
- int number,index,level,i;
- char array[maxchar], text[maxchar], character, mask[maxchar];
-
- void permute(void)
- {
- int index;
- level++;
- for(index=0; index<number; index++)
- {
- if(mask[index])
- {
- text[level]=array[index];
- mask[index]=0;
- permute();
- mask[index]=1;
- if(level==number-1)
- {
- for(i=0; i<number; putchar(text[i]), i++);
- putchar('\n');
- }
- }
- }
- level--;
- }
-
- main(int argc, char *argv[])
- {
- int test=1;
-
- if(argc>1)
- {
- level=-1;
- number=strlen(argv[1]);
- if(number>=maxchar) exit(10);
- strcpy(array, argv[1]);
-
- while(test)
- { /* sortieren */
- test=0;
- for(i=0; i<number-1; i++)
- {
- if(array[i]>array[i+1])
- {
- character=array[i];
- array[i]=array[i+1];
- array[i+1]=character;
- test=1;
- }
- }
- }
-
- for (index=0; index<number; index++)
- mask[index]=1;
- permute();
- }
- }
-
-